package com.bdqn.t382.sz.test;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import com.bdqn.t382.sz.Person;



class Sz1 {
    public static void main(String[] args) {
        // 获取 Person 类的 Class 对象
        Class<?> personClass = Person.class;
        // 获取类的基本信息
        System.out.println("类的基本信息：");
        // 类名
        System.out.println("类名：" + personClass.getName());
        // 修饰符
        System.out.println("修饰符：" + Modifier.toString(personClass.getModifiers()));
        // 继承关系
        System.out.println("父类：" + personClass.getSuperclass().getName());
        // 获取类的构造方法信息
        System.out.println("\n类的构造方法信息：");
        Constructor<?>[] constructors = personClass.getConstructors();
        for (Constructor<?> constructor : constructors) {
            System.out.print("构造方法：" + Modifier.toString(constructor.getModifiers()) + " " + constructor.getName() + "(");
            Class<?>[] parameterTypes = constructor.getParameterTypes();
            for (int i = 0; i < parameterTypes.length; i++) {
                if (i > 0) {
                    System.out.print(", ");
                }
                System.out.print(parameterTypes[i].getName());
            }
            System.out.println(")");
        }
        // 获取类的属性信息
        System.out.println("\n类的属性信息：");
        Field[] fields = personClass.getDeclaredFields();
        for (Field field : fields) {
            System.out.println("属性：" + Modifier.toString(field.getModifiers()) + " " + field.getType().getName() + " " + field.getName());
        }
        // 获取类的方法信息
        System.out.println("\n类的方法信息：");
        Method[] methods = personClass.getMethods();
        for (Method method : methods) {
            System.out.print("方法：" + Modifier.toString(method.getModifiers()) + " " + method.getReturnType().getName() + " " + method.getName() + "(");
            Class<?>[] parameterTypes = method.getParameterTypes();
            for (int i = 0; i < parameterTypes.length; i++) {
                if (i > 0) {
                    System.out.print(", ");
                }
                System.out.print(parameterTypes[i].getName());
            }
            System.out.println(")");
        }
    }
}